iT邦幫忙

2023 iThome 鐵人賽

0
Software Development

深入淺出設計模式 - 使用 C++系列 第 33

《軟體工程篇 - 5》 — 軟體測試方法 (Software Testing)

  • 分享至 

  • xImage
  •  

軟體測試原則 (Software Testing Principles)

  1. 測試顯示缺陷的存在 (Testing shows the presence of defects)
    • 軟體測試的目標是使軟體出錯。測試可以減少缺陷的數量,但不能證明軟體是完全無缺陷
    • 即使進行多次測試,也不能確保軟體100%無缺陷
  2. 無法進行全面測試 (Exhaustive testing is not possible)
    • 全面測試是對軟體的所有可能輸入(有效或無效)和預設條件進行測試的過程
    • 由於成本、時間和人力等因素,全面測試是不可能的
  3. 早期測試 (Early testing)
    • 為了早期發現軟體中的缺陷,應在軟體開發生命週期(SDLC)的早期階段開始測試。這樣做成本會相對較低
  4. 缺陷集中 (Defect clustering)
    • 在一個項目中,大部分的缺陷通常會集中在少數模塊中
    • 根據 Pareto 原則,80%的軟體缺陷來自20%的模塊
  5. 殺蟲劑悖論 (Pesticide paradox)
    • 重複相同的測試用例不會發現新的缺陷
    • 因此,需要審查測試用例並添加或更新測試用例以找到新的缺陷
  6. 測試取決於上下文 (Testing is context-dependent)
    • 測試方法取決於所開發軟體的上下文
    • 不同類型的軟體需要進行不同類型的測試
      • 例如: 電子商務網站的測試與Android應用程序的測試是不同的
  7. 缺陷不存在的謬誤 (Absence of errors fallacy)
    • 即使一個建成的軟體99%無缺陷,但如果它不符合用戶需求,則它是不可用的
    • 不僅軟體需要是99%無缺陷,而且還必須滿足所有客戶需求

Types of Software Testing

https://ithelp.ithome.com.tw/upload/images/20231015/201386431x64L8wIA5.png

單元測試(Unit Testing)

單元測試通常由開發人員在編寫特定單元的代碼時進行

  • 這些測試通常使用與軟體相同的編程語言,並使用提供創建和運行測試所需工具的測試框架
  • 促進測試驅動開發(TDD)

整合測試(Integration Testing)

整合測試是將軟體應用的單個單元或組件組合起來並作為一組進行測試的方法,可發現單元測試可能未發現的缺陷、改善系統設計

回歸測試(Regression Testing)

回歸測試是在軟體被修改或更改後對先前開發和測試的軟體進行重新測試的方法

煙霧測試(Smoke Testing)

煙霧測試是一種軟體測試方法,其中對軟體應用的新構建執行一小組測試,以確定它是否足夠穩定以進行進一步測試

系統測試(System Testing)

定義與過程:系統測試是一種軟體測試方法,其中對整個軟體系統進行測試,以確保它符合其設計的要求和規範

Alpha 測試(Alpha Testing)

Alpha 測試通常在軟體開發階段的末期進行,主要由內部開發團隊執行。這種測試旨在在軟體發布到外部測試環境之前,找出所有可能的問題和缺陷

Beta 測試(Beta Testing)

Beta 測試是由最終用戶在實際的使用環境中執行的。這種測試旨在收集用戶的反饋,以進一步改進軟體

性能測試(Performance Testing)

性能測試是一種軟體測試方法,用於確定軟體應用在不同條件和負載下的性能。

測試技巧 (Testing Techniques)

白箱測試 (White box testing)

黑箱測試 (Black box testing)

灰箱測試 (Gray Box Testing)

V-Model in Software Testing

https://ithelp.ithome.com.tw/upload/images/20231015/20138643WpATf7UVQt.jpg

  • V-Model Objectives
    • Project Risks Minimization
    • Guaranteed Quality
    • Total Cost reduction of the Entire Project
    • Improved Communication between all Parties Involved

Reference

  1. https://www.geeksforgeeks.org/software-testing-tutorial/
  2. https://www.geeksforgeeks.org/software-testing-basics/
  3. https://www.geeksforgeeks.org/software-engineering-seven-principles-of-software-testing/
  4. https://www.geeksforgeeks.org/types-software-testing/
  5. https://www.tutorialspoint.com/software_testing_dictionary/v_model.htm

上一篇
《軟體工程篇 - 4》 — 軟體工程管理的量度 (Measures / Metrics)
下一篇
《補充》 — Design Patterns Used Across Different Layers in Distributed System
系列文
深入淺出設計模式 - 使用 C++37
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言